home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO026.dsk
/
GRAPHER.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
6KB
|
83 lines
100 REM ***************************************
110 REM * *
120 REM * Stock Portfolio Tracking Program V2 *
130 REM * Data Graph Generation *
140 REM * module *
150 REM * Copyright 1986 by Eric P. King *
160 REM * GRAPHER V2.02 *
170 REM * *
180 REM ***************************************
190 REM
200 HOME : CLEAR : CALL PEEK(175) +256 * PEEK(176) -46
210 PRINT CHR$(4)"PREFIX": INPUT P1$: PRINT CHR$(4)"PREFIX"P1$"DHR": PRINT CHR$(4)"PREFIX"P1$
220 PRINT : PRINT CHR$(4);"BRUN DHR/RELOCATE.TB"
230 & "CHART",GGO: & "CHART",FCL: & "CHART",TMD
240 ONERR GOTO 840
250 D$ = CHR$(4): PRINT D$"OPEN CONFIG": PRINT D$"READ CONFIG": INPUT P2$: PRINT D$"CLOSE"
260 PRINT D$"PREFIX": INPUT P1$: PRINT D$"PREFIX"P2$
270 REM <<----------- MAIN MENU ------------>>
280 TEXT : HOME :N$ = "<< GRAPHIC OPTIONS >>": GOSUB 820
290 A$ = "": & "POS",30,6;"1) Chart a Stock": & "POS",30,7;"RETURN to Exit": & "POS",30,9: & "IU","#=1";"#";A$: IF A$ = "1" GOTO 320
300 FL = 3: HOME : PRINT D$"PREFIX"P1$: PRINT D$"- PRODOS"
310 REM <<-------- GET NAME & CHART STOCK --------->>
320 HOME :A$ = "": & "POS",1,6: & "CENTER","Enter the name of the stock to chart": & "CENTER","(RETURN to exit to Main Menu)": & "POS",35,12
330 PRINT "Name: ";: & "IU","#=0..9,A..Z,.;@=A..Z";"@#######";A$: IF A$ = "" GOTO 280
340 FL = 1: PRINT D$" VERIFY PRICES/"A$: HOME : & "POS",30,6;"1) Chart from DAILY price file": & "POS",30,7;"2) Chart from WEEKLY price file"
350 & "POS",38,9: & "IU","#=1..2";"#";B$: IF B$ = "" GOTO 350
360 IF B$ = "1" THEN PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT RT
370 IF B$ = "2" THEN A$ = A$ +".W":FL = 2: PRINT D$"VERIFY PRICES/"A$: PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT RT
380 A = RT -1: IF RT >220 THEN A = 219
390 D = 0: IF A >169 THEN D = A -169
400 IC = INT(510/((A -D) +1))
410 DIM HP(A),LP(A),CP(A),VO(A):B = 1: IF RT >220 THEN B = (RT -220) +1
420 LP = 2000: FOR I = B TO RT: PRINT D$"READ PRICES/"A$",R"I
430 FOR J = 0 TO 3: INPUT T$(J): NEXT :HP(I -B) = VAL(T$(0)):LP(I -B) = VAL(T$(1)):CP(I -B) = VAL(T$(2)):VO(I -B) = VAL(T$(3)): IF HP(I -B) >HP THEN HP = HP(I -B)
440 IF LP(I -B) <LP AND LP(I -B) >0 THEN LP = LP(I -B)
450 IF VO(I -B) >VO THEN VO = VO(I -B)
460 NEXT : PRINT D$"READ PRICES/"A$",R"B: FOR I = 0 TO 6: INPUT T$(I): NEXT :SD$ = T$(4) +"/" +T$(5) +"/" +T$(6)
470 PRINT D$"READ PRICES/"A$",R"RT: FOR I = 0 TO 6: INPUT T$(I): NEXT :ED$ = T$(4) +"/" +T$(5) +"/" +T$(6): PRINT D$"CLOSE"
480 HP = ( INT(HP +5)/5) *5:VO = VO +100: IF LP <7 THEN LP = 0
490 IF LP < >0 THEN LP = ( INT(LP -2)/5) *5
500 & "CHART",GMD: & "CHART",CLP(39,559,9,30): & "CHART",SCL(0,510,0,VO):C = 1 -IC: FOR I = D TO A:C = C +IC: FOR J = 0 TO 1
510 & "CHART",MOV(C +J,0): & "CHART",DRW(C +J,VO(I)): NEXT : NEXT
520 & "CHART",CLP(39,559,0,8): & "CHART",SCL(0,100,0,100): & "CHART",HLB(SD$,0,0,3): & "CHART",HLB(ED$,100,0,9): & "CHART",HLB(A$,50,0,6)
530 & "CHART",CLP(0,35,34,191): & "CHART",SCL(0,50,LP,HP): & "CHART",HLB( STR$(HP),50,HP,7): & "CHART",HLB( STR$(LP),50,LP,9):Y = INT(((HP -LP)/6) +.5)
540 FOR I = 1 TO 6: & "CHART",HLB( STR$((Y *I) +LP),50,(Y *I) +LP,7): NEXT
550 & "CHART",CLP(39,559,34,191): & "CHART",SCL(0,510,LP,HP): & "CHART",AXS(50,Y,0,LP): & "CHART",GID(50,Y,0,LP)
560 C = 1 -IC: FOR I = D TO A:C = C +IC: & "CHART",MOV(C,LP(I)): & "CHART",DRW(C,HP(I)): & "CHART",MOV(C,CP(I)): & "CHART",DRW(C +IC,CP(I))
570 NEXT : CALL -198: CALL -756: & "CHART",TMD
580 REM <<-------- AFTER CHARTING OPTIONS -------->>
590 N$ = "<< OPTIONS >>": GOSUB 820:A$ = "": & "POS",30,6;"1) Chart another Stock": & "POS",30,7;"2) Add an Average to current chart"
600 & "POS",30,8;"3) Print the chart": & "POS",30,9;"4) View the chart again": & "POS",30,10;"5) Exit Chart program"
610 & "POS",30,12: & "IU","#=1..5";"#";A$: IF A$ = "" GOTO 610
620 E = VAL(A$): ON E GOTO 900,650,790,630,300
630 & "CHART",GMD: CALL -756: & "CHART",TMD: GOTO 590
640 REM <<------- ADD AVERAGE LINES TO CHART --------->>
650 N$ = "<< ADD AVERAGE LINES TO CHART >>": GOSUB 820: & "CENTER","The limits are a low of 9 or high of 50 for averages."
660 & "CENTER","Common sense must also be used consistent with the amount of"
670 & "CENTER","data available for graphing.": & "POS",1,10: & "CENTER","Please enter the factor to use."
680 A$ = "": & "POS",30,12: & "IU","#=0..9";"##";A$: IF A$ = "" GOTO 650
690 AV = VAL(A$): IF AV <9 OR AV >50 GOTO 680
700 IF (AV -1 >A) THEN HOME : CALL -198: & "POS",1,12: & "CENTER","INSUFFICIENT DATA": FOR I = 1 TO 1000: NEXT : GOTO 650
710 & "CHART",GMD:I3 = 0:C = 1: FOR I = D TO A:I2 = 0:I4 = 0: IF I <(AV -1) THEN C = C +IC: GOTO 770
720 FOR J = I TO I -(AV -1) STEP -1: IF CP(J) = 0 GOTO 740
730 I2 = I2 +CP(J):I4 = I4 +1
740 NEXT :I2 = I2/I4
750 IF I3 = 0 THEN & "CHART",PLT(C,I2):I3 = 1:C = C +IC: GOTO 770
760 & "CHART",DRW(C,I2):C = C +IC
770 NEXT : CALL -198: CALL -756: & "CHART",TMD: GOTO 590
780 REM <<---------- PRINT CHART ------------>>
790 & "WINDOW": HOME : & "POS",1,12: & "CENTER","TURN ON THE PRINTER": & "CENTER","AND PRESS <RETURN>": CALL -756
800 & "IWD",1,10: GOTO 590
810 REM -- SECTION TITLE SUB --
820 & "WINDOW": HOME : VTAB 2: & "CENTER",N$: & "WINDOW",4: HOME : RETURN
830 REM <<--------- ERROR ROUTINES --------->>
840 & "ERR",EC,EL: POKE 216,0: PRINT D$"CLOSE": ONERR GOTO 840
850 IF EC = 6 GOTO 870
860 & "WINDOW": PRINT D$"CLOSE": CALL -211: PRINT "ERROR # "EC".. IN LINE "EL: PRINT "FILES ARE CLOSED": END
870 ON FL GOTO 880,890,910
880 HOME : CALL -211: & "POS",1,10;"I cannot find a price file for "A$: PRINT "Press any key to continue": CALL -756:FL = 0: GOTO 320
890 HOME : CALL -211: & "POS",1,10;"I cannot find a WEEKLY price file for "A$: PRINT "Press any key to continue": CALL -756:FL = 0: GOTO 320
900 HOME : PRINT D$"PREFIX"P1$: GOTO 200
910 HOME : CALL -211: & "POS",1,10: & "CENTER","** PRODOS is not in the Systems' subdirectory **": PRINT : PRINT
920 & "CENTER","because internal pointers have been changed, you must set the": & "CENTER","PREFIX and type -PRODOS": CALL -198: END